
import java.util.Deque;
import java.util.LinkedList;
public class LinkedListDequeDemo {
    public static void main(String[] args) {
        // 创建一个LinkedList实例作为Deque，存储Integer
        Deque<Integer> linkedDeque = new LinkedList<>();

        // 1. 添加元素（注意：LinkedList允许null值，但不推荐用于Integer）
        linkedDeque.addFirst(10);
        linkedDeque.offerFirst(null); // 虽然允许但不推荐,可以在String时用
        linkedDeque.addLast(20);
        linkedDeque.offerLast(30);

        System.out.println("当前双端队列: " + linkedDeque);
        // 输出：当前双端队列: [null, 10, 20, 30]

        // 2. 查看元素
        System.out.println("头部元素(getFirst): " + linkedDeque.getFirst());// null
        System.out.println("头部元素(peekFirst): " + linkedDeque.peekFirst());// null
        System.out.println("尾部元素(getLast): " + linkedDeque.getLast());// 30
        System.out.println("尾部元素(peekLast): " + linkedDeque.peekLast());// 30

        // 3. 移除元素
        System.out.println("移除头部(removeFirst): " + linkedDeque.removeFirst());// null
        System.out.println("移除头部(pollFirst): " + linkedDeque.pollFirst());// 10
        System.out.println("移除尾部(removeLast): " + linkedDeque.removeLast());// 30
        System.out.println("移除尾部(pollLast): " + linkedDeque.pollLast());// 20

        System.out.println("操作后队列: " + linkedDeque.isEmpty());// true

        // 4. 作为List和Deque的混合使用
        LinkedList<Integer> linkedList = (LinkedList<Integer>) linkedDeque;
        linkedList.add(0, 999); // 使用List的方法在指定位置插入
        linkedList.add(888);

        System.out.println("\n作为List和Deque混合使用:");
        System.out.println("索引1处的元素: " + linkedList.get(1)); // List方法  888
        System.out.println("作为Deque的头部: " + linkedList.peekFirst()); // Deque方法 999

        // 5. 迭代器遍历
        System.out.println("\n正向遍历:");
        for (Integer item : linkedList) {
            System.out.println(item);
        }
        /*输出：
        正向遍历:
        999
        888*/


        System.out.println("\n反向遍历:");
        java.util.Iterator<Integer> descendingIterator = linkedList.descendingIterator();
        while (descendingIterator.hasNext()) {
            System.out.println(descendingIterator.next());
        }
        /*输出：
        反向遍历:
        888
        999*/
    }
}
